/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.unal.inventory;


/**
 *
 * @author Camilo
 */
public class Stock {
    
    //logica http://www.slideshare.net/jhaltuzarra/manejo-y-control-de-inventarios diapo,66
    int inventarioMaximo;//tamaño total
    int inventarioMedio; //existencia media
    int inventarioLote;//tamaño maximo para vender
    int inventarioSeguridad;//inventario seguridad
    int puntoPedido;//punto de pedido
    int demandaAnual; // demanda anual
    int nE; // inventario entre reaprovisionamiento
    int lT; // ciclo gestion de pedido
    int inventarioActual;
    
    public Stock(int d_anual, int lT, int iS){
        this.inventarioSeguridad = iS; 
        this.demandaAnual = d_anual;
        this.lT = lT;
    }
    
    public Stock(int qOpt, int d_anual, int lT, int iS){
        calcularInventario(qOpt, d_anual, lT, iS);
    }
    
    public void calcularInventario(int qOpt, int d_anual, int lT, int iS){
        this.inventarioLote = qOpt;
        this.inventarioSeguridad = iS; 
        this.demandaAnual = d_anual;
        this.inventarioMaximo = iS + qOpt;
        this.inventarioMedio = this.inventarioMaximo/2;
        this.puntoPedido = iS + (lT*d_anual/360);
        this.nE = this.inventarioMaximo/d_anual;
        this.inventarioActual = inventarioMaximo;
        this.lT = lT;
    }
    
    public boolean validaInventario (){ // Si valida inventario = falso aumentar tamañp del inventario
        if (inventarioMaximo>=lT*(demandaAnual/180)){
            return true;
        }
        System.out.println("falso");
        return false;
    }
    
    public String disminuirInventario (int pedido){
        if(inventarioActual - pedido < inventarioSeguridad){
            return "Inventario por debajo de reserva de seguridad";
        }
        if(inventarioActual - pedido <= puntoPedido){
            if(inventarioActual - pedido >= inventarioSeguridad){
                inventarioActual -= pedido; 
            }
            System.out.println("Pedir mas productos D:");
            return "Inventario por debajo del limite minimo, realizar pedido";
        }
        inventarioActual -= pedido; 
        return "ok";
    }
    
    public String aumentarInventario (int aum){
        if (inventarioActual + aum > inventarioMaximo){
            return "Inventario lleno, no se puede agregar mas productos D:";
        }
        return "ok";
    }
    
    public boolean reabastecerInventario (){
        inventarioActual = inventarioMaximo; 
        return true;
    }

    public int getInventarioMaximo() {
        return inventarioMaximo;
    }

    public void setInventarioMaximo(int inventarioMaximo) {
        this.inventarioMaximo = inventarioMaximo;
    }

    public int getInventarioMedio() {
        return inventarioMedio;
    }

    public void setInventarioMedio(int inventarioMedio) {
        this.inventarioMedio = inventarioMedio;
    }

    public int getInventarioLote() {
        return inventarioLote;
    }

    public void setInventarioLote(int inventarioLote) {
        this.inventarioLote = inventarioLote;
    }

    public int getInventarioSeguridad() {
        return inventarioSeguridad;
    }

    public void setInventarioSeguridad(int inventarioSeguridad) {
        this.inventarioSeguridad = inventarioSeguridad;
    }

    public int getPuntoPedido() {
        return puntoPedido;
    }

    public void setPuntoPedido(int puntoPedido) {
        this.puntoPedido = puntoPedido;
    }

    public int getDemandaAnual() {
        return demandaAnual;
    }

    public void setDemandaAnual(int demandaAnual) {
        this.demandaAnual = demandaAnual;
    }

    public int getnE() {
        return nE;
    }

    public void setnE(int nE) {
        this.nE = nE;
    }

    public int getlT() {
        return lT;
    }

    public void setlT(int lT) {
        this.lT = lT;
    }

    public int getInventarioActual() {
        return inventarioActual;
    }

    public void setInventarioActual(int inventarioActual) {
        this.inventarioActual = inventarioActual;
    }
}
